/**
 * 某一个字符串在另一个字符串中的位置,
 * BF模式 abcdac cda
 */
function find(haystack, needle) {
    let i = 0, j = 0;
    if (needle.length > haystack.length) {
        return -1;
    }
    while (i < haystack.length && j < needle.length) {
        if (haystack[i] === needle[j]) {
            i++;
            j++;
        } else {
            i = i - j + 1;
            j = 0;
        }
    }
    if (j >= needle.length) {
        return i - needle.length;
    }
    return -1;

    // 下面是我自己写的
    // let num = -1;
    // let pt = 0; // 定义两个指针
    // let pt1 = 0;
    // let ln = 0;
    // while (pt < haystack.length) {
    //     if (haystack[pt] === needle[pt1]) {
    //         pt++;
    //         pt1++;
    //         ln++;
    //     } else {
    //         pt = pt - ln + 1;
    //         ln = 0;
    //         pt1 = 0;
    //     }
    //     if (ln === needle.length) {
    //         num = pt - needle.length;
    //         break;;
    //     }
    // }
    // return num;
}

/**
 * 使用[i,i+子串长度]进行比较
 * @param {*} haystack 
 * @param {*} needle 
 * @returns 
 */
function subStr(haystack, needle) {
    let i = 0, j = -1;
    let len = needle.length;
    if (needle.length > haystack.length) {
        return -1;
    }
    while (i < haystack.length && i + len < haystack.length) {
        let substr = haystack.slice(i, i + len);
        if (substr === needle) {
            j = i;
            return j;
        }
        i++;
    }
    return j;
}

console.log("[字符串的首次出现]", subStr("leetcode",  "leeto"));